home *** CD-ROM | disk | FTP | other *** search
/ Palm Utilities / Palm_Utilities_CD-ROM_2001_2001.iso / files / utils time / DCal 0.5 / dcal.exe / dcal / source / callback.h next >
Encoding:
C/C++ Source or Header  |  1999-11-11  |  759 b   |  41 lines

  1. #ifndef __CALLBACK_H__
  2. #define __CALLBACK_H__
  3.  
  4. /* This is a workaround for a bug in the current version of gcc:
  5.  
  6.    gcc assumes that no one will touch %a4 after it is set up in crt0.o.
  7.    This isn't true if a function is called as a callback by something
  8.    that wasn't compiled by gcc (like FrmCloseAllForms()).  It may also
  9.    not be true if it is used as a callback by something in a different
  10.    shared library.
  11.  
  12.    We really want a function attribute "callback" which will insert this
  13.    progloue and epilogoue automatically.
  14.    
  15.       - Ian */
  16.  
  17. register void *reg_a4 asm("%a4");
  18.  
  19. #define CALLBACK_PROLOGUE \
  20.     void *save_a4 = reg_a4; asm("move.l %%a5,%%a4; sub.l #edata,%%a4" : :);
  21.  
  22. #define CALLBACK_EPILOGUE reg_a4 = save_a4;
  23.  
  24. #endif
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.